<?php

/**
 *                  ********************
 *    ************ PROGRAMSÁVOK ADMIN CONTROLLER ************
 *                  ********************
 * 
 * 
 */
if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Programsavok extends Admin_Controller {

    function __construct() {
        // Call the Model constructor
        parent::__construct();
        $this->load->model("programsav_model");
    }

    /**
     * 
     * Index Page for admin
     *  Datatable full ajaxos formmal
     *
     * ajax_source_site_url - datatables kéréseire válaszol 
     * table_name - a kitöltendő tábla id-je  (html view-ban)
     * table_fields - a html tábla egyes oszlopainak nevei 
     * ajax_get_form_site_url - ettől az oldaltól kérhetjük el a form-ot
     *                  ha elküldjük az id-t akkor rekord adatokkal, szerkesztünk
     *                  ha nem küldünk id,t üres formot kapunk
     * ajax_save_record_site_url - ide tudunk ajax-al submittolni, újat id nélkül, 
     *                                      meglévőt id-vel.
     * ajax_delete_site_url - az ajaxos törlés címe (paramétersoron kapja meg az id-t)
     */
    public function index() {
        $this->data['title'] = "Programsávok";
        // bekonfiguráljuk a datatablest
        $this->data['dtables'] = array(
            'ajax_source_site_url' => 'admin/programsavok/ajax_get_table',
            'table_name' => 'programsav_table',
            'table_fields' => array(
                'programsav_id',
                'programsav_nev',
                'programsav_rovid_leiras',
                'programsav_szin'),
            'ajax_get_form_site_url' => 'admin/programsavok/ajax_get_form',
            'ajax_save_record_site_url' => 'admin/programsavok/ajax_save_data',
            'ajax_delete_site_url' => 'admin/programsavok/ajax_delete',
        );

        $this->_load_view('admin/programsavok/programsav_view', $this->data);
    }

    /**
     * HTML válaszban ad formot
     * 
     * visszaadja a form-ot az ajax editornak
     * 
     * ha kap post-ban id-t akkor visszaadja a formot 
     * az idnek megfelelő rekorddal
     * 
     * ha nem kap post-ban id-t, üres formot ad.
     * 
     */
    function ajax_get_form() {
        $all_post = $this->input->post();
        // most megnézzük kaptunk-e id-t.
        if (isset($all_post['id'])) {
            // van id-nk
            // betöltjük a dolgokat
            $this->data['programsav_data'] = $this->programsav_model->get_programsav($all_post['id']);
        } else {
            // nincs id-nk, üres form, nem is csinálunk semmit
        }
        // betöltjük CSAK a form view-et, mivel több dolgot nem adunk ki
        // ez a HTML válasz az ajax hívásra!
        $this->load->view('admin/programsavok/programsav_ajax_form_view', $this->data);
    }

    /**
     * Elmenti a programsávot
     * 
     * ha van id, updatel
     * egyébként új programsáv
     * 
     */
    function ajax_save_programsav($id = NULL) {
        $programsav = $this->input->post();
        $message = '';
        // ha nincs programsáv név akkor failelünk
        if ($programsav['programsav_nev'] == '') {
            $message['error'] = "A programsáv név megadása kötelező!";
            echo encode_json($message);
            return;
        }

        if ($id != NULL) {
            // van id, updatelünk
            $programsav['programsav_id'] = $id;
            $this->programsav_model->update_programsav($programsav);
            $message['msg'] = "A programsáv: " . $programsav['programsav_nev'] . " mentése megtörtént.";
            //var_dump($this->input->post());
        } else {
            // nincs id, újat mentünk

            $this->programsav_model->add_programsav($programsav);
            $message['msg'] = "Az új programsáv: " . $programsav['programsav_nev'] . " mentése megtörtént.";
            // var_dump($this->input->post());
        }
        echo encode_json($message);
    }

    /**
     * 
     * 
     *  Törlés
     * 
     * 
     * 
     * @param type $id 
     */
    public function ajax_delete($id) {
        $this->programsav_model->delete($id);
    }

    /**
     * Visszaadja a táblát datatables-nek
     */
    public function ajax_get_table() {
        /**
         * Ami bejön és fontos:
         * iDisplayStart
         * iDisplayLength
         * sSearch
         * sEcho    _ XSS protection
         * 
         * 
         * Ami kimegy:
         * 
         * iTotalRecords
         * iTotalDisplayRecords
         * sEcho
         * aaData
         */
        // elkérjük az összes postolt adatot
        $all_post = $this->input->post();

        //var_dump($all_post);
        // megnézzük mennyi column van a táblázatban
        $number_of_columns = $all_post['iColumns'];

        // megnézzük kell-e keresni valamire
        ($all_post['sSearch'] != '') ? $search_like = $all_post['sSearch'] : $search_like = NULL;

        // csinálunk egy listát a megjelítendő változókról
        // azaz adatbázisból az oszlopokról
        $select_from_database = "";
        for ($i = 0; $i < $number_of_columns; $i++) {
            $select_from_database .= $all_post["mDataProp_$i"];
            //a vesszőt az utolsóig hozzáadja, mivel ez felsorolás
            if ($i < $number_of_columns - 1)
                $select_from_database.=", ";
        }

        // SORBARENDEZÉS IMPLEMENTÁLÁSA
        // megszerezzük mi szerint kell sortolnunk
        $sort_by_id = $all_post["iSortCol_0"];
        // így megkapjuk a nevét
        $order_by = $all_post["mDataProp_$sort_by_id"];
        // és most hozzáadjuk az irányt
        $order_dir = $all_post["sSortDir_0"];

        // összeállítjuk a lekérést, amit a modelnek küldünk.
        $request = array(
            // keresés
            'search_like' => $search_like,
            // kiválasztás
            'select' => $select_from_database,
            // limit&offset
            'limit' => $all_post['iDisplayLength'],
            'offset' => $all_post['iDisplayStart'],
            'order_by' => $order_by,
            'order_dir' => $order_dir
        );

        $programsavok = $this->programsav_model->get_programsavok($request);

        foreach ($programsavok as $programsav) {
            // div a szin megjelenítésére
            $programsav->programsav_szin =
                    "<div class=\"tableColor\" style=\"background-color: $programsav->programsav_szin;\"></div>";
            $programsav->DT_RowId = "programsav_id_" . $programsav->programsav_id;
            // levágjuk a másodperceket
        }

        $data["iTotalRecords"] = $this->programsav_model->count();
        $data["iTotalDisplayRecords"] = $data["iTotalRecords"];
        $data["sEcho"] = $all_post["sEcho"];
        $data["aaData"] = $programsavok;

        echo encode_json($data);
    }

}